/* 
 * File:   StaffAssist.h
 * Author: batista
 *
 * Created on 18 de Março de 2013, 21:00
 */

#ifndef STAFFASSIST_H
#define	STAFFASSIST_H
#include <cstring>
#include <iostream>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <ucommon/ucommon.h>
//
#include "TimeUtil.h"
#include "DirFile.h"
#include "ShowMsg.h"
#include "DbConn.h"

using namespace std;
using std::string;

using namespace UCOMMON_NAMESPACE;

class ThreadStaffAssist : private ShowMsg, public JoinableThread {
public:
    ThreadStaffAssist();

    virtual ~ThreadStaffAssist();
    //
    void run(void);
    //

    DbConn* getDbconn() const {
        return dbconn;
    }

    DirFile* getDirfl() const {
        return dirfl;
    }

    void setDirfl(DirFile* dirfl) {
        this->dirfl = dirfl;
    }

    void setDbconn(DbConn* dbconn) {
        this->dbconn = dbconn;
    }

    long getTimeout_attend() const {
        return timeout_attend;
    }

    void setTimeout_attend(long timeout_attend) {
        this->timeout_attend = timeout_attend;
    }

    long getTimeoutAssist() const {
        return timeoutAssist;
    }

    void setTimeoutAssist(long timeoutAssist) {
        this->timeoutAssist = timeoutAssist;
    }


private:

    /**
     * Metodo responsavel por fazer a pesquisa 
     * para os eventos pendentes na base de 
     * dados.
     */
    void RunStaffAssist();

    /**
     * Metodo responsavel por atender os evento
     * em aberto na base de dados.
     * @param vec_events
     */
    void AssistEvents(vector<Event*> vec_events);

    //
private:
    DbConn *dbconn;
    TimeUtil *tmut;
    DirFile *dirfl;
    Event *event;
    //Tempo de atendimento maximo
    long timeout_attend;
    //Tempo para fazer uma limpeza
    long timeoutAssist;
    std::string time_to_apply;
};

#endif	/* STAFFASSIST_H */

